/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import utils.DbManager;
import utils.EmailCASA;
import utils.EmailUNITN;
import utils.EmailVincitoreCASA;
import utils.EmailVincitoreUNITN;
import utils.MessagiVincita;
import utils.Prodotti;
import utils.StoricoAsta;
import utils.Utilizzatore;
import utils.Vendita;
import utils.Vincitore;

/**
 *
 * @author Alice
 */
public class ControlloScadenzaProdotti extends HttpServlet {
    private DbManager manager;
    int prodVinto[] = null;
    int vincitoreProd[] =null;
   
    @Override
public void init() throws ServletException {
// inizializza il DBManager dagli attributi di Application
this.manager = (DbManager)super.getServletContext().getAttribute("dbmanager");
}

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
          HttpSession session = request.getSession(false);
          if(session.getAttribute("user")==null)
            response.sendRedirect(request.getContextPath() + "/error.jsp");
            session.setAttribute("vincita",null);
          System.out.println("ok");   
         String username=(String)session.getAttribute("username");
         Utilizzatore user=(Utilizzatore)session.getAttribute("user");
         String nome=user.getNome(); String cognome=user.getCognome();
         int idUtenteCorr= user.getId_Utilizzatore();
         List<Vincitore> vinc = null;
            
         try{
                
            Date data=new Date();
            Timestamp time=new Timestamp(data.getTime());
    System.out.println("o2");           
            vinc=manager.Vincitori(time,idUtenteCorr);
            System.out.println("ok4");
            }  
            
             catch (SQLException ex) {
            Logger.getLogger(Aggiunta_Prodotti.class.getName()).log(Level.SEVERE, null, ex);
            String message="Errore !";
            response.sendRedirect(request.getContextPath()+"/error.jsp?message"+URLEncoder.encode(message, "UTF-8"));
            }
            List<MessagiVincita> mex=new ArrayList<MessagiVincita>();
            List<Vendita> vend=new ArrayList<Vendita>();
            int count=0; int idProd=0;
            try{
            if(vinc!=null){
                for(int i=0;i<vinc.size();i++){
                int vincitore=vinc.get(i).getIdVinc();
                System.out.println("id"+vincitore+" "+idUtenteCorr);
                //if(vincitore==idUtenteCorr){
                    count++;
                    String nomeP=vinc.get(i).getNomeP();
                    idProd=vinc.get(i).getIdProd();
                    System.out.println("nomp "+nomeP);
                    String message="Complimenti! Lei ha fatto la miglior offerta e si è aggiudicato il prodotto: "+nomeP;
                    manager.ScriviMex(vincitore,message);
            }      }
            mex=manager.PrendiMes(idUtenteCorr);        
                for(int i=0;i<mex.size();i++){
                    if(idUtenteCorr == mex.get(i).getIdVinc()){
                        System.out.println("VINC+idProdotto="+idProd);
                        session.setAttribute("vincita", mex.get(i).getMessage());
                        //PEZZO NUOVO
                        vend=manager.InvioEmailVendita(idProd);
                        if(vend!=null){
                            for(int ii=0;ii<vend.size();ii++){
                                Utilizzatore utente=(Utilizzatore)session.getAttribute("utilizzatore");
                                String rete=utente.getRete();
                                System.out.println("RETE= "+rete);
                                if("Altre Reti".equals(rete)){
                                System.out.println("CASA"); 
                                EmailVincitoreCASA.main(vend.get(ii).getIdProdotto(),vend.get(ii).getNomeProd(),
                                        vend.get(ii).getPrezzo_Spedizione(),vend.get(ii).getTassaCasaDAsta(),
                                        vend.get(ii).getDataOra(),user.getNome(),user.getCognome(),user.getEmail());
                                }else{ if("UniTN".equals(rete)){
                                System.out.println("UNITN"); 
                                EmailVincitoreUNITN.main(vend.get(ii).getIdProdotto(),vend.get(ii).getNomeProd(),
                                        vend.get(ii).getPrezzo_Spedizione(),vend.get(ii).getTassaCasaDAsta(),
                                        vend.get(ii).getDataOra(),user.getNome(),user.getCognome(),user.getEmail());
               }}
                                
                            }
                        }
                        
                    }
                    }
            }catch (SQLException ex) {
            Logger.getLogger(Aggiunta_Prodotti.class.getName()).log(Level.SEVERE, null, ex);
            String message="Errore !";
            response.sendRedirect(request.getContextPath()+"/error.jsp?message"+URLEncoder.encode(message, "UTF-8"));
            
            }catch(AddressException ae){
            Logger.getLogger(Aggiunta_Prodotti.class.getName()).log(Level.SEVERE, null, ae);
            String message="Errore !";
            response.sendRedirect(request.getContextPath()+"/error.jsp?message"+URLEncoder.encode(message, "UTF-8"));
            }catch(MessagingException me){
            Logger.getLogger(Aggiunta_Prodotti.class.getName()).log(Level.SEVERE, null, me);
            String message="Errore !";
            response.sendRedirect(request.getContextPath()+"/error.jsp?message"+URLEncoder.encode(message, "UTF-8"));
        }
                       
            response.sendRedirect(request.getContextPath()+"/ControllaOfferte");
            
            }
    

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
